BH1750传感器,用于检测环境光光照强度。
BH1750FVI是日本罗姆(ROHM)半导体生产的数字式环境光传感IC。其主要特性有:
I2C数字接口,支持速率最大400Kbps输出量为光照度(Illuminance)测量范围1~65535 lux,分辨率最小到1lux低功耗(Power down)功能屏蔽50/60Hz市电频率引起的光照变化干扰支持两个I2C地址,通过ADDR引脚选择较小的测量误差(精度误差最大值+/-20%)
GND 电源地ADD I2C地址引脚SDA I2C总线数据引脚SCL I2C总线时钟引脚VCC 电源 电压3-5V
![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9pbWFnZS5nZWVrLXdvcmtzaG9wLmNvbS9mb3J1bS8yMDEyMDgvMTAvMTI0NDM1bGw2c2d5eTRpZzExc3p6aC5qcGc?x-oss-process=image/format,png)
![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9pbWFnZS5nZWVrLXdvcmtzaG9wLmNvbS9mb3J1bS8yMDEyMDgvMTAvMTI0NDQ0Y3JjcXEwMDM0cjJkc3FvZC5qcGc?x-oss-process=image/format,png)
#include
#include
#include
int BH1750address = 0x23;//BH1750 I2C地址 //ADDR="L" for this module
byte buff[2];
int flag = 0;//定时中断标志
void timer()//定时中断函数
{
flag = 1;
}
void setup()
{
Wire.begin();
Serial.begin(9600);
MsTimer2::set(2000, timer); //定时器设置,每2秒触发一次timer函数操作
MsTimer2::start();
}
void loop()
{
if( flag )//
{
Serial.print( BH1750() );
Serial.println("[lux]");
flag = 0;//归零,等着定时中断重新赋值
}
}
double BH1750() //BH1750设备操作
{
int i=0;
double val=0;
//开始I2C读写操作
Wire.beginTransmission(BH1750address);
Wire.send(0x10);//1lx reolution 120ms//发送命令
Wire.endTransmission();
delay(200);
//读取数据
Wire.beginTransmission(BH1750address);
Wire.requestFrom(BH1750address, 2);
while(Wire.available()) //
{
buff[i] = Wire.receive(); // receive one byte
i++;
}
Wire.endTransmission();
if(2==i)
{
val=((buff[0] |